package com.hs.utils;

import java.util.*;

public class HighLight 
{	

	/**
	 * 
	 * @param s
	 * @param key
	 * @return
	 */

	public static String makeHighLight(String s,String key) 
	{   
		if(null != key ){
			if(-1 != key.indexOf(":")){
				key = key.substring(key.indexOf(":")+1);
			}
		}
		List li=new ArrayList();
		li=getTermToken(s,key);	
		for(int i=0;i<li.size();i++)
		{
			//1��s=s.replaceAll(li.get(i).toString(),"<u>"+li.get(i).toString()+"</u>");			
			//2��s=s.toLowerCase().replaceAll(li.get(i).toString().toLowerCase(),"<u>"+li.get(i).toString().toLowerCase()+"</u>");
			/*3��
			String q1=li.get(i).toString();
			for(int j=0;j<=s.length()-q1.length();j++)
			{
				if(s.substring(j,j+q1.length()).equalsIgnoreCase(q1))
				{					
					s=s.replaceAll(s.substring(j,j+q1.length()),"<u>"+s.substring(j,j+q1.length())+"</u>");					
					break;
				}
			}*/
			
			//*jdk1.4
			/*
			String stmp=s.toLowerCase().toString();			
			String q1=li.get(i).toString().toLowerCase();			
			//System.out.println("aaa="+s);
			//System.out.println("bbb="+li.get(i).toString());			
			int j=stmp.indexOf(q1);
			//System.out.println(j);
			if(j>-1)
			{
				if(stmp.substring(j,j+q1.length()).equalsIgnoreCase(q1))
				{					
					s=s.replaceAll(s.substring(j,j+q1.length()),"<u>"+s.substring(j,j+q1.length())+"</u>");
				}
			}*/
			
			//jdk1.3			
			String stmp=s.toLowerCase().toString();			
			String q1=li.get(i).toString().toLowerCase();			
			int j=stmp.indexOf(q1);
			
			if(j>-1)
			{			
				String rep=s.substring(j,j+q1.length());
				int k=0;
				while(stmp.indexOf(q1,j)>-1)
				{	
					stmp=stmp.substring(0,j)+"<u>"+rep+"</u>"+stmp.substring(j+rep.length(),stmp.length());
					s=s.substring(0,j)+"<u>"+rep+"</u>"+s.substring(j+rep.length(),s.length());
					j=j+rep.length()+7;	
					j=stmp.indexOf(q1,j);
					if(j==-1)
					{
						break;
					}
				}
			}
			
						
		}		
		return s;
	}
	
	
	private static List getTermToken(String s,String key)
	{
		StringTokenizer st = new StringTokenizer(key);
		List li=new ArrayList();
		String tmp;
		while (st.hasMoreTokens())
		{	  	
			tmp=(String)st.nextElement();
			//ȥ����ڵ����
			//if(s.toLowerCase().indexOf(tmp.toLowerCase())>0)
			if(s.toLowerCase().toString().indexOf(tmp.toLowerCase().toString())>-1)
			{
				if(tmp.equals("&&")||tmp.equals("||")||tmp.equals("AND")||tmp.equals("OR")||tmp.equals("NOT")||tmp.equals("!")||tmp.equals("+")||tmp.equals("-")||tmp.equals("^")||tmp.equals("~")||tmp.equals("?")||tmp.equals(":")||tmp.equals("."))
				{
					
				}
				else
				{
					li.add(tmp);
				}
			}				  		
		}
		//System.out.println("li="+li);
		return li;		
	}
	
	
 
}
    
